
/**
 * @file KTV 订单数据模型
 * @description 定义了在KTV点餐场景下，一个订单对象的数据结构。
 */

/**
 * 订单状态枚举
 * 10: 备货中 (顾客下单后，后厨/吧台可见)
 * 20: 配送中 (服务员已接单，正在送往包厢)
 * 30: 已完成 (商品已送达包厢)
 * 99: 已取消 (订单被取消)
 */
export const OrderStatus = {
  PREPARING: 10,
  DELIVERING: 20,
  COMPLETED: 30,
  CANCELLED: 99,
};

/**
 * @class Order
 * @description KTV订单对象
 */
export class Order {
  /**
   * @param {string} orderId - 订单的唯一标识
   * @param {string} roomId - 订单所属的包厢号
   * @param {Array<object>} items - 订单包含的商品列表
   * @param {number} totalAmount - 订单总金额
   * @param {number} status - 订单的当前状态 (使用OrderStatus枚举)
   * @param {string} timestamp - 下单时间戳
   */
  constructor(orderId, roomId, items, totalAmount, status, timestamp) {
    this.orderId = orderId;
    this.roomId = roomId;
    this.items = items; // e.g., [{ id, name, quantity, price }]
    this.totalAmount = totalAmount;
    this.status = status;
    this.timestamp = timestamp;
  }
}

/**
 * @description 创建一个订单对象的示例
 * @returns {Order}
 */
export function createMockOrder() {
  return new Order(
    `ORD${Date.now()}`,
    'V888',
    [{ id: 'p1', name: '百威啤酒', quantity: 6, price: 25.00 }],
    150.00,
    OrderStatus.PREPARING,
    new Date().toISOString(),
  );
}
